package ar.edu.utn.frba.tacs.warnes;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import ar.edu.utn.frba.tacs.warnes.entities.Auto;
import ar.edu.utn.frba.tacs.warnes.entities.Pieza;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

public class PiezasTestCase {

	private ContenedorWarnes contenedor;
	private Pieza pieza;
	private Auto auto;

	@SuppressWarnings("deprecation")
	@Before
	public void inicializaciones() {
		this.contenedor = ContenedorWarnes.getInstance();

		this.pieza = this.contenedor.creaUnaPieza("Rueda");
		this.pieza.setId(new Long(1));
		this.pieza.setCategoria(ConstantesWarnes.Categoria.PARTES);

		this.auto = this.contenedor.creaUnAuto("ASD-123");
		this.auto.setPatente("asd-123");
		this.auto.setModelo(new Date().getYear());
		this.auto.setAnio(new Date());
		this.auto.setFechaDesguace(new Date());

		this.pieza.setAutoOrigen(this.auto);
	}

	@After
	public void limpiarContenedor() {
		this.contenedor.limpiate();
	}

	@Test
	public void testDamePiezas() {
		List<Pieza> piezas = this.contenedor.getPiezas();
		assertEquals(1, piezas.size());
	}

	@Test
	public void testConsultaPiezasPorCategoria() {
		List<Pieza> piezasBuscadas = this.contenedor
				.getPiezas(ConstantesWarnes.Categoria.PARTES);
		assertTrue(piezasBuscadas.contains(this.pieza));
	}

	@Test
	public void testConsultaPiezasPorId() {
		Pieza p2 = this.contenedor.creaUnaPieza("Volante");
		p2.setId(new Long(2));
		assertTrue(this.contenedor.tenesLaPiezaConId(new Long(1)));
		assertTrue(this.contenedor.tenesLaPiezaConId(new Long(2)));
		assertFalse(this.contenedor.tenesLaPiezaConId(new Long(3)));
	}

}
